What is @turf/tin?
@turf/tin is a module of the Turf.js library that allows you to create a Triangulated Irregular Network (TIN) from a set of points. TINs are used in geographic information systems (GIS) to represent a surface. This package is particularly useful for spatial analysis and geospatial data visualization.
What are @turf/tin's main functionalities?
Create TIN from Points
This feature allows you to create a TIN from a set of points. Each point can have properties such as elevation, which can be used to create the TIN. The code sample demonstrates how to create a TIN from three points with elevation properties.
const turf = require('@turf/tin');
const points = turf.featureCollection([
turf.point([0, 0], {elevation: 10}),
turf.point([10, 10], {elevation: 20}),
turf.point([20, 20], {elevation: 30})
]);
const tin = turf.tin(points, 'elevation');
console.log(JSON.stringify(tin));
Other packages similar to @turf/tin
d3-delaunay
d3-delaunay is a D3 module that provides fast algorithms for computing Delaunay triangulations and Voronoi diagrams. It is similar to @turf/tin in that it can be used to create triangulated networks from a set of points. However, d3-delaunay is more focused on performance and is often used in data visualization contexts.
earcut
earcut is a fast, robust polygon triangulation library. While it is not specifically designed for geospatial data, it can be used to triangulate polygons, which is a similar operation to creating a TIN. earcut is known for its speed and simplicity.
triangulate
triangulate is a simple library for triangulating 2D polygons. It is similar to @turf/tin in that it can be used to create a network of triangles from a set of points. However, it is more general-purpose and not specifically designed for geospatial applications.
@turf/tin
tin
Takes a set of points and creates a
Triangulated Irregular Network,
or a TIN for short, returned as a collection of Polygons. These are often used
for developing elevation contour maps or stepped heat visualizations.
If an optional z-value property is provided then it is added as properties called a
, b
,
and c
representing its value at each of the points that represent the corners of the
triangle.
Parameters
points
FeatureCollection<Point> input pointsz
String? name of the property from which to pull z values
This is optional: if not given, then there will be no extra data added to the derived triangles.
Examples
var points = turf.randomPoint(30, {bbox: [50, 30, 70, 50]});
for (var i = 0; i < points.features.length; i++) {
points.features[i].properties.z = ~~(Math.random() * 9);
}
var tin = turf.tin(points, 'z');
var addToMap = [tin, points]
for (var i = 0; i < tin.features.length; i++) {
var properties = tin.features[i].properties;
properties.fill = '#' + properties.a + properties.b + properties.c;
}
Returns FeatureCollection<Polygon> TIN output
This module is part of the Turfjs project, an open source module collection dedicated to geographic algorithms. It is maintained in the Turfjs/turf repository, where you can create PRs and issues.
Installation
Install this single module individually:
$ npm install @turf/tin
Or install the all-encompassing @turf/turf module that includes all modules as functions:
$ npm install @turf/turf